//给定一个未排序的整数数组 nums ，找出数字连续的最长序列（不要求序列元素在原数组中连续）的长度。 
//
// 请你设计并实现时间复杂度为 O(n) 的算法解决此问题。 
//
// 
//
// 示例 1： 
//
// 
//输入：nums = [100,4,200,1,3,2]
//输出：4
//解释：最长数字连续序列是 [1, 2, 3, 4]。它的长度为 4。 
//
// 示例 2： 
//
// 
//输入：nums = [0,3,7,2,5,8,4,6,0,1] 0012345678
//输出：9
// 
//[1,2,0,1] 0 1 1 2
//解释：最长数字连续序列是 [0, 1, 2]
//输出：3
// 提示： 
//
// 
// 0 <= nums.length <= 105 
// -109 <= nums[i] <= 109 
// 
// Related Topics 并查集 数组 哈希表 
// 👍 862 👎 0

import java.util.*;
//leetcode submit region begin(Prohibit modification and deletion)
class Solution128 {
    public int longestConsecutive(int[] nums) {
        if (nums.length == 0) {return 0;}
        if (nums.length == 1) {return 1;}
        Arrays.sort(nums);
        ArrayList<Integer> out = new ArrayList<>();
        out.add(nums[0]);
        int tmp = 1, res = 1;
        int start = 1;
        while (start < nums.length) {
            if (nums[start] == out.get(out.size() - 1) + 1) {
                tmp += 1;
            } else if (nums[start] == out.get(out.size() - 1)) {
                tmp += 0;
            }
            else {
                out.clear();
                tmp = 1;
            }
            out.add(nums[start]);
            start += 1;
            res = Math.max(res, tmp);
        }
        return res;
    }
}
//leetcode submit region end(Prohibit modification and deletion)
